package com.example.ymm.modules1.service.hl.ex;

import com.example.ymm.base.BaseService;
import com.example.ymm.model.TableList;
import com.example.ymm.model.YmPageDto;
import com.example.ymm.modules1.entity.hl.ex.ExPublishPaper;
import com.example.ymm.modules1.entity.hl.ex.ExUserAnser;
import com.example.ymm.modules1.entity.hl.ex.ExUserPaper;
import com.example.ymm.modules1.query.hl.ex.ExQuestionQueryCriteria;
import com.example.ymm.modules1.query.hl.ex.ExUserAnserQueryCriteria;
import com.example.ymm.modules1.service.dto.heng.ex.*;

import java.util.List;

public interface ExUserAnserService extends BaseService<ExUserAnser> {


    TableList<ExUserAnser> list(ExUserAnserQueryCriteria criteria, YmPageDto ymPage);

    List<ExUserAnser> queryAll(ExUserAnserQueryCriteria criteria);

    /**
     * 团队答题的得分
     * @param criteria
     * @return
     */
    UserAnserDto getUserScore(ExUserAnserQueryCriteria criteria);

    /**
     * 获取考试结束的分数 -团队
     * @param criteria
     * @return
     */
    UserAnserDetailDto getUserScoreDetail(ExUserAnserQueryCriteria criteria);


    List<UserAnserView> getUserAnsers(ExUserAnserQueryCriteria criteria);




    List<UserOptionView> getUserOptions(ExUserAnserQueryCriteria criteria);


    /**
     * 获取某一题目的答题记录
     * @param criteria
     * @return
     */
    List<ExUserAnser> getAnsersByQuestionId(ExQuestionQueryCriteria criteria);


    /**
     * 该题已有人员在以下发布试卷中进行了答题
     * @param criteria
     * @return
     */
    List<ExPublishPaper> getAnsersPublishPaper(ExQuestionQueryCriteria criteria);



    /**
     * 修改某题的选项后重新计分
     * @param criteria
     */
    List<ExUserPaper> againCountQuestionScoreFn(ExQuestionQueryCriteria criteria);

    /**
     * 管理端
     * 获取用户考试结果-面试卷
     * @param
     * @return
     */
    List<GroupOneResultDto> manageUserScoreByMainShi(String userPaperId);

    /**
     * 手机端
     * 获取用户考试结果-面试卷
     * @param publishPaperId
     * @return
     */
    List<GroupOneResultDto> getUserScoreByMainShi(String publishPaperId);

    /**
    * 统计 用户选项字母 每个选了多少 [对象] （性格测试）
    */
    UserXingGeAnserDto xinGeCountLetterGroup(ExUserAnserQueryCriteria criteria);

    /**
     * 统计 用户选项字母 每个选了多少 [列表] （性格测试）
     */
    List<UserCountLetterListDto> xinGeCountLetterList(ExUserAnserQueryCriteria criteria);


    /**
     * 系统强制提交或者 人工自己提交
     * @param publishPaper
     * @return
     */
    GroupOneResultDto  userSubQuestions(ExPublishPaper publishPaper,String userName);


}
